package com.bank.mapper;

import com.bank.dto.AccountDTO;
import com.bank.dto.AccountOperationDTO;
import com.bank.entity.Account;
import com.bank.vo.AccountLoginVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface AccountMapper {

    /**
     * 获取用户所有账户信息
     * @param userId
     * @return
     */
    List<AccountLoginVO> getAllAccountsByUserId(Long userId);

    /**
     * 根据用户id获取账户数量
     * @param userId
     * @return
     */
    Integer getAccountNumberByUserId(Long userId);

    /**
     * 添加账户
     * @param account
     */
    void addAccount(Account account);

    /**
     * 根据账户id获取账户信息
     * @param accountId
     * @return
     */
    Account getAccountById(Long accountId);

    /**
     * 根据账户id获取每月额度
     * @param accountId
     * @return
     */
    BigDecimal getMonthlyLimit(Long accountId);

    void setBalanceByAccountId(Account account);

    void setAccountStatus(@Param("accountId") Long accountId, @Param("lost") Integer lost);

    void updateTimeByAccountId(Long accountId, LocalDateTime updateTime);
}
